using System;

using GURUCORE.Framework.Core;
using GURUCORE.Framework.Core.Factory;

namespace GURUCORE.Framework.DataAccess.Provider
{
    /// <summary>
    /// Object mapping version of GURUCORE/Config/System/DataProvider.config
    /// </summary>
	public sealed class DataProviderInfo : FactoryItemBase
	{
		private string m_sAssembly;
        private string m_sProviderInvariantName;
		private string m_sConnectionClass;
		private string m_sDataAdapterClass;
		private string m_sCommandClass;
		private string m_sParameterClass;
		private string m_sDataReaderClass;
		private string m_sTransactionClass;

		private string m_sParameterForm;
		private string m_sInlineParameterForm;
		private string m_sUnicodeForm;
        private string m_sFieldNameWrap;        
		private string m_sLatestIdentityStatement;
		private string m_sAllowBatchQuery;
        private string m_sPagingSelectTemplate;

		public DataProviderInfo()
		{
		}


     

		public string Assembly
		{
			get
			{
				return m_sAssembly;
			}
			set
			{
				m_sAssembly = value;
			}
		}

        /// <summary>
        /// Use for DBHelper DataTable orient function, to take appropriate DbbProviderFactory from Microsoft DbProviderFactories
        /// </summary>
        public string ProviderInvariantName
        {
            get { return m_sProviderInvariantName; }
            set { m_sProviderInvariantName = value; }
        }

		public string ConnectionClass
		{
			get
			{
				return m_sConnectionClass;
			}
			set
			{
				m_sConnectionClass = value;
			}
		}

		public string DataAdapterClass
		{
			get
			{
				return m_sDataAdapterClass;
			}
			set
			{
				m_sDataAdapterClass = value;
			}
		}

		public string CommandClass
		{
			get
			{
				return m_sCommandClass;
			}
			set
			{
				m_sCommandClass = value;
			}
		}

		public string ParameterClass
		{
			get
			{
				return m_sParameterClass;
			}
			set
			{
				m_sParameterClass = value;
			}
		}

		public string DataReaderClass
		{
			get
			{
				return m_sDataReaderClass;
			}
			set
			{
				m_sDataReaderClass = value;
			}
		}

		public string TransactionClass
		{
			get
			{
				return m_sTransactionClass;
			}
			set
			{
				m_sTransactionClass = value;
			}
		}



        
		public string ParameterForm
		{
			get
			{
				return m_sParameterForm;
			}
			set
			{
				m_sParameterForm = value;
			}
		}

		public string InlineParameterForm
		{
			get
			{
				return m_sInlineParameterForm;
			}
			set
			{
				m_sInlineParameterForm = value;
			}
		}

		public string UnicodeForm
		{
			get
			{
				return m_sUnicodeForm;
			}
			set
			{
				m_sUnicodeForm = value;
			}
		}
                
        public string FieldNameWrap
		{
			get
			{
				return m_sFieldNameWrap;
			}
			set
			{
                m_sFieldNameWrap = value;
			}
		}

		public string LatestIdentityStatement
		{
			get
			{
				return m_sLatestIdentityStatement;
			}
			set
			{
				m_sLatestIdentityStatement = value;
			}
		}

		public string AllowBatchQuery
		{
			get
			{
				return m_sAllowBatchQuery;
			}
			set
			{
				m_sAllowBatchQuery = value;
			}
		}

        public string PagingSelectTemplate
        {
            get
            {
                return m_sPagingSelectTemplate;
            }

            set
            {
                m_sPagingSelectTemplate = value;
            }
        }
	}
}
